Entity Framework (EF) প্রজেক্টে Model এবং DbContext ফাইল দুটি অত্যন্ত গুরুত্বপূর্ণ। Model ফাইলগুলিতে ডেটাবেস টেবিলের জন্য প্রয়োজনীয় ক্লাসগুলো সংজ্ঞায়িত করা হয়, এবং DbContext ফাইলটি ডেটাবেসের সাথে যোগাযোগ এবং ডেটাবেস অপারেশনগুলির জন্য ব্যবহৃত হয়। EF প্রজেক্টে এই দুটি ফাইল সঠিকভাবে ম্যানেজ করা নিশ্চিত করে যে ডেটাবেস এবং কোডের মধ্যে সঠিক সম্পর্ক স্থাপন হচ্ছে এবং ডেটা সঠিকভাবে পরিচালিত হচ্ছে।
Model ফাইলটি মূলত সেই ক্লাসগুলি ধারণ করে যা ডেটাবেসের টেবিলের প্রতিনিধিত্ব করে। প্রতিটি Model Class ডেটাবেস টেবিলের একটি একক রেকর্ডের প্রতিনিধিত্ব করে, এবং এটি Entity Class হিসেবে পরিচিত।
Model Class তৈরি করার সময়, সাধারণভাবে প্রপার্টিগুলি ডেটাবেস টেবিলের কলামের সাথে মিলে যায়। আপনি Data Annotations এবং Fluent API ব্যবহার করে এই Model গুলোর কনফিগারেশন করতে পারেন। উদাহরণস্বরূপ, যদি আপনার একটি Student
টেবিল থাকে, তাহলে আপনি Student
নামে একটি Entity Class তৈরি করবেন।
উদাহরণ:
public class Student
{
public int StudentId { get; set; } // Primary Key
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
}
DbContext ফাইলের মধ্যে এই Student
ক্লাসকে একটি DbSet
হিসেবে সংজ্ঞায়িত করা হয়, যা ডেটাবেসে Student
টেবিলের প্রতিনিধিত্ব করবে।
DbContext হচ্ছে Entity Framework এর কেন্দ্রবিন্দু। এটি ডেটাবেসের সাথে যোগাযোগের জন্য প্রয়োজনীয় সকল লজিক ধারণ করে। DbContext
ক্লাসটি ডেটাবেসের সাথে সমস্ত CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করে এবং Entity Class গুলোর মাধ্যমে ডেটাবেস টেবিলগুলোর সাথে সম্পর্ক স্থাপন করে।
DbContext একটি বিশেষ ক্লাস যা DbContext
থেকে ইনহেরিট করে এবং এতে একটি বা একাধিক DbSet
প্রপার্টি থাকতে পারে, যা Entity Class গুলোর প্রতিনিধিত্ব করবে। প্রতিটি DbSet
একটি টেবিলের প্রতিনিধিত্ব করে।
উদাহরণ:
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Teacher> Teachers { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Connection string configuration
optionsBuilder.UseSqlServer("your_connection_string_here");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Fluent API configuration can be added here
modelBuilder.Entity<Student>().HasKey(s => s.StudentId);
}
}
এখানে:
Students
টেবিলের প্রতিনিধিত্ব করে।Teachers
টেবিলের প্রতিনিধিত্ব করে।ডেটাবেসের মডেল এবং DbContext ফাইলগুলোর সঠিকভাবে ম্যানেজমেন্ট করা অত্যন্ত গুরুত্বপূর্ণ, কারণ এর উপর নির্ভর করে আপনার অ্যাপ্লিকেশনের ডেটাবেস অপারেশনগুলির কার্যকারিতা এবং পারফরম্যান্স।
Student
ক্লাসের প্রপার্টি StudentId
টেবিলের primary key হবে।Required
, StringLength
, Key
, ইত্যাদি।উদাহরণ:
public class Student
{
[Key]
public int StudentId { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
public int Age { get; set; }
}
DbSet
প্রপার্টি থাকতে হবে, যা সেই Entity ক্লাসের সঙ্গে সম্পর্কিত ডেটাবেস টেবিলের প্রতিনিধিত্ব করবে।appsettings.json
বা কোডের মধ্যে সরাসরি কনফিগার করা হয়।OnModelCreating
মেথড ব্যবহার করুন। Fluent API মাধ্যমে ডেটাবেস কনফিগারেশন করা যেতে পারে।উদাহরণ:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>()
.HasKey(s => s.StudentId);
modelBuilder.Entity<Student>()
.Property(s => s.Name)
.IsRequired()
.HasMaxLength(100);
}
এটি গুরুত্বপূর্ণ যে, যখন আপনার ডেটাবেস মডেল পরিবর্তিত হয় (যেমন নতুন প্রপার্টি যোগ করা বা প্রপার্টি মুছে ফেলা), তখন ডেটাবেসেও এসব পরিবর্তন সিঙ্ক করা প্রয়োজন। EF আপনাকে Migrations সিস্টেমের মাধ্যমে এটি করার সুবিধা দেয়।
Add-Migration
কমান্ড ব্যবহার করা হয়।Update-Database
কমান্ড ব্যবহার করা হয়।উদাহরণ:
Add-Migration InitialCreate
Update-Database
Model এবং DbContext ফাইল সঠিকভাবে ম্যানেজমেন্ট করা হলে আপনার Entity Framework প্রজেক্টের কার্যকারিতা উন্নত হয়। Entity ক্লাস এবং DbContext ক্লাসের মধ্যে সঠিক সম্পর্ক স্থাপন এবং কনফিগারেশন করলে, ডেটাবেসের সঙ্গে কাজ করা অনেক সহজ এবং কার্যকর হয়ে ওঠে। EF-এ মডেল ও ডেটাবেসের সিঙ্ক্রোনাইজেশন এবং মাইগ্রেশন ব্যবস্থার মাধ্যমে ডেটাবেসের পরবর্তীতে পরিবর্তন করা আরও সহজ হয়ে যায়।
common.read_more